<?php
//此控制器为后台用户管理控制器
namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use DB;//引入数据库
use Hash;//引入哈希算法
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Http\Requests\AdminPostRequest;//引入表单验证

class UserController extends Controller
{

    //用户登录
    public function getLogin(Request $request)
    {

        //接收用户名
        $name=$request->input('name');
        //接收密码
        $password=$request->input('password');
        //查询数据
        $res = DB::table('user')->where('name',$name)->get();
       
        //判断用户名是否正确
        if(empty($res))
        {
            echo 1;//用户名不能为空
            die;
        }
        //取出密码
        $pwd=$res[0]->password;
       //密码匹对
        $res1=Hash::check($password,$pwd);
        if (!$res1) {
            echo 2;//密码错误
            die;
        }
        if($res && $res1){
            echo 3;//用户名和密码都对
        }
    }

    //处理登录的方法
     public function postUp(Request $request){
        //接收用户名
        $name=$request->input('name');
        //查出数据
        $res=DB::table('user')->where('name',$name)->get();
        //判断是不是管理员
        if($res[0]->auth ==0){
            
            echo '<script>alert("您不是管理员,无权登陆！");history.go(-1);</script>';
        }else{
            //获取id
            $id=$res[0]->id;

            if ($res) {    
                //查询用户详情表
                $res1=DB::table('userDetails')->where('uid',$id)->get();
                $nname=$res1[0]->nickName;
                $pic=$res1[0]->pic;
                //将id,用户名,昵称,图片写入到session中
                session_start();
                $_SESSION['id']=$id;
                $_SESSION['name']=$name;
            }
            
            //分配数据
            return view('admin.index',['uid'=>$id,'name'=>$name,]);//把用户的id带过去
        } 
    }

    //用户列表页
    public function getIndex(Request $request)
    {

        //每页显示几条
        $num = $request->input('num',5);

        //判断用户是否搜索
        if($request->input('keyword')){
            $user = DB::table('user')
                ->leftjoin('userDetails','user.id', '=', '.userDetails.uid')
                ->select('user.*','userDetails.*')
                ->where('name','like','%'.$request->input('keyword').'%')
                ->paginate($num);
        }else{
            $user = DB::table('user')
                ->leftjoin('userDetails','user.id','=','.userDetails.uid')
                ->select('user.id','user.name','user.status','user.auth','userDetails.sex')
                ->paginate($num);
        }
        // dd($user);
        //获取所有的请求参数
        $all = $request->all();
        //解析模板
        return view('admin.user.index',['user'=>$user,'all'=>$all]);
    }

    //用户添加
    public function getAdd()
    {
        //显示用户添加表单
        return view('admin.user.add');
    }

    //执行用户添加  AdminPostRequest引入表单验证请求 这个请求类继承了Request
    public function postInsert(AdminPostRequest $request){
    	//提取除了_token的请求参数
    	$data=$request->except(['_token']);
        //判断两次输入的密码是否一致
        if ($data['password']!==$data['repassword']) {
            return redirect('admin/user/add')->with('error','两次密码不一致');
        }

        //进行密码加密
        $password = Hash::make($data['password']);
        //提取的请求参数  名字
        $name=$request->input('name');
        //权限管理
        $auth=$request->input('auth');
 
        //执行用户添加入库操作
    	$res=DB::table('user')->insertGetId(['name'=>$name,'password'=>$password,'auth'=>$auth]);
        //执行入库操作
        //插入数据详情表
        $pic='/uploads/1.jpg';
        $res2 = DB::table('userDetails')->insertGetId(['uid'=>$res,'pic'=>$pic,'nickName'=>$name]);
        //操作返回结果
        if ($res && $res2) {
            return redirect('admin/user/index')->with('success','用户添加成功');
        }else{
            return back()->withInput();
        }
    }

    //修改状态
    public function getXgzt(Request $request){
        //接受用户id和状态
        $id=$request->input('id');
        $status=$request->input('status');
        //进行数据库操作
        if ($status) {
            $res=DB::table('user')->where('id',$id)->update(['status'=>0]);
        }else{
            $res=DB::table('user')->where('id',$id)->update(['status'=>1]);
        }
        
        //返回操作结果
        if ($res) {
            return redirect('admin/user/index')->with('success','状态修改成功');
        }else{
            return back()->withInput()->with('error','状态修改失败');
        }
    }

    //用户成就
    public function getCj(Request $request){
        //接受用户的id
        $id=$request->input('id');
        //接受用户的用户名
        $name=$request->input('name');

        //统计用户的关注数
        $countgz=DB::table('follow')->where('nid',$id)->count();
        //统计此用户的赞数  答案表
        $data=DB::table('answer')->select('pass')->where('uid',$id)->get();
        //var_dump($countgz);
        //遍历数据
        $countz1='';
        foreach ($data as $k => $v) {
            //获取赞数这个字段
            $countz=intval($v->pass);

            //赞数相加
            $countz1 += $countz;
        }

        //统计此用户的赞数  文章表
        $data1=DB::table('article')->select('pass')->where('uid',$id)->get();
        //var_dump($data);
        //遍历数据
        $countz2='';
        foreach ($data1 as $k => $v) {
            //获取赞数这个字段
            $countz=intval($v->pass);

            //赞数相加
            $countz2 += $countz;
        }
         
        //统计此用户的赞数  专栏文章表
        $data2=DB::table('columnArticle')->select('pass')->where('uid',$id)->get();
        //var_dump($data);
        //遍历数据
        $countz3='';
        foreach ($data2 as $k => $v) {
            //获取赞数这个字段
            $countz=intval($v->pass);

            //赞数相加
            $countz3 += $countz;
        }

        //获取所有的赞数
        $ctzs=$countz3+$countz2+$countz1;
        //查询用户表的认证和加v
        $res=DB::table('user')->select('rz','jv')->where('id',$id)->get();
        //获取认证和加v的数据
        $rz=$res[0]->rz;
        $jv=$res[0]->jv;

        //显示用户成就信息,带数据过去
        return view('admin.user.cj',['name'=>$name,'countgz'=>$countgz,'ctzs'=>$ctzs,'id'=>$id,'rz'=>$rz,'jv'=>$jv]);

    }

     //用户资料
    public function getData(Request $request)
    {   
        //获取id
        $id = $request->input('id');

        //匹配数据
        $res = DB::table('userdetails')->where('userdetails.uid',$id)->get();

        //分配数据
        return view('admin.user.data',['res'=>$res]);

    }

    //用户退出
    public function getLogout(Request $request)
    {   //开启session
        session_start();
        //销毁session
        unset($_SESSION);
        //返回登陆页
        return view('admin.login');
    }
    //修改认证ajax
    // public function postUpdaterz(Request $request){
    //     //获取id和rz信息
    //     $id=$request->input('id');
    //     $rz=$request->input('rz');
    //     var_dump($id);
    //     //进行修改操作
    //     if ($rz) {
    //         $res=DB::table('user')->where('id',$id)->update(['rz'=>0]);
    //     }else{
    //         $res=DB::table('user')->where('id',$id)->update(['rz'=>1]);
    //     }
    //     echo $res;
    //     die;
    //      //返回操作结果
    //     if ($res) {
    //         return redirect('admin/user/cj')->with('success','修改成功');
    //     }else{
    //         return back()->withInput()->with('error','修改失败');
    //     }
    // }
}
